---
title: Getting Started on Windows
slug: /v3/getting-started/windows-users
version: '3.0'
section: docs
category: getting started
keywords:
---

<Message
  type={`yellow`}
  title={`Information`}
  text={`Native development of substrate is _not_ very well supported! It is _highly_ recommended to
use [Windows Subsystem Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (WSL)
and follow the instructions for [Ubuntu/Debian](../installation#ubuntudebian).
Substrate development is easiest on Unix-based operating systems like macOS or Linux. The examples
in the Substrate [Tutorials](/tutorials) and [How-to Guides](/how-to-guides)
use Unix-style terminals to demonstrate how to interact with Substrate from the command line.`}
/>

If you do decide to try and use a Windows computer to _natively_ build Substrate, do the following:

1. Download and install "Build Tools for Visual Studio:"

   - You can get it at this link: https://aka.ms/buildtools.
   - Run the installation file: `vs_buildtools.exe`.
   - Ensure the "Windows 10 SDK" component is included when installing the Visual C++ Build Tools.
   - Restart your computer.

2. Install Rust:

   - Detailed instructions are provided by the
     [Rust Book](https://doc.rust-lang.org/book/ch01-01-installation.html#installing-rustup-on-windows)
     and a quick reference is available at <https://rustup.rs/> .

     - Download from: https://www.rust-lang.org/tools/install.
     - Run the installation file: `rustup-init.exe` for 32 or 64 bis as appropriate.
       - It shouldn't prompt you to install `vs_buildtools` since you did it in step 1.
     - Choose "Default Installation."
     - To get started, you need Cargo's bin directory (`%USERPROFILE%\.cargo\bin`) in your PATH
       environment variable. Future applications will automatically have the correct environment,
       but you may need to restart your current shell.

3. Run these commands in Command Prompt (`CMD`) to set up your Wasm Build Environment:

   ```bash
   rustup update nightly
   rustup update stable
   rustup target add wasm32-unknown-unknown --toolchain nightly
   ```

4. Install LLVM: https://releases.llvm.org/download.html

5. Install OpenSSL with `vcpkg` using PowerShell:

   ```bash
   mkdir C:\Tools
   cd C:\Tools
   git clone https://github.com/Microsoft/vcpkg.git --depth=1
   cd vcpkg
   .\bootstrap-vcpkg.bat
   .\vcpkg.exe install openssl:x64-windows-static
   ```

6. Add OpenSSL to your System Variables using PowerShell:

   ```powershell
   $env:OPENSSL_DIR = 'C:\Tools\vcpkg\installed\x64-windows-static'
   $env:OPENSSL_STATIC = 'Yes'
   [System.Environment]::SetEnvironmentVariable('OPENSSL_DIR', $env:OPENSSL_DIR, [System.EnvironmentVariableTarget]::User)
   [System.Environment]::SetEnvironmentVariable('OPENSSL_STATIC', $env:OPENSSL_STATIC, [System.EnvironmentVariableTarget]::User)
   ```

7. Install `cmake`: https://cmake.org/download/

8. Install `make`

   - This can be done using Chocolatey. First you need to install the Chocolatey package manager: https://chocolatey.org/install
   - Once Chocolatey installed you can install make:

   ```
   choco install make
   ```
